
Emacs Help

                                               version: 0.3
                                               created: 09/08/97 {04:32:40 pm}
                                           last update: 02/08/01 {08:30:20 pm}


The emacs package provides a set of key bindings that mimic those used in
the Emacs editor.  The emacs editor enjoys wide-spread popularity on unix
systems.  Pete Keleher acknowledges it as part of the inspiration for
Alpha.

The procedures and commands that get key bindings through this package
primarily deal with: navigation in the text (buffer), text manipulation,
and window appearance & positioning for the most part (aside: the use of
the word "buffer" to refer to a text containing window probably comes from
emacs).

A lot of the key bindings are unusual compared to those used in 'normal'
Macintosh editor/word processors, so it if fair to wonder what the
advantages of these bindings are for those not already used to emacs. 
Well, the primary advantage is in keeping your hands close to the home
keys, you rarely have to move away from the alpha-numeric portion of the
keyboard into the arrow, keypad or function key areas if you use this
package.


	  	Emacs Submenu


Since the bindings/functionality used by emacs may not yet be second nature
to you, you can have this package include a submenu under 'Edit' that can
serve as a handy reference to jog your memory, and as an alternative method
of invoking a desired operation.  The inclusion of this submenu is the
default behavior of this package, if they are already second nature to
you, or, become so, you can remove it by unchecking 'Use Emacs Menu' under
the 'Miscellaneous' section of the globals dialog.


	  	Emacs Key Bindings


The control modifier is used in a lot of these bindings, this modifier is
rarely used in other Macintosh applications, but was the first
non-ordinary modifier available on early keyboards.  Those keyboards had
only one control key, and it was located where the caplock key is today. 
This kept your hands even more tightly concentrated than the current
arrangement, you only needed to stretch your little finger over a tiny bit
and then you could make all your control combinations with ease.  Today's
keyboards are pretty well standardize with the two control keys in the
lower corners.

This configuration makes these control combinations a little less
convenient, it's more of a stretch away from the home row position and makes
the use of one hand to press both the control key and the 'regular' key a
difficult stretch for some combinations.  The reason the control keys have
assumed their current configuration is that programmers form a pretty small
subset of the people who use computers so the keyboard makers moved those
mysterious and "useless" keys out of harms way.  Perhaps Pete will one day
add the ability to swap the cop-lock and lefthand control key functionality
while you are using alpha.  The keyboard I use (a Datadesk Switchboard)
allows you to do this physically, I find the emacs bindings even more time
saving in that configuration.

If you do get used to the control key combinations, there is a bonus as
regards scrollinglist dialogs that you may not be aware of, as long as
there is a selection in the list, the following key combinations will work:

	control'-' (i.e. control-minus) == downArrow,
	control-L == pageDown,
	control-K == pageUp.


All of the bindings below start with <control-x>, and then are followed by 
the indicated key.  In some cases, the key must be also be preceded by the 
modifier key indicated.  For example, <control-x><control-f> will open a 
"Open File" dialog.  Click on the hyperlink to open the actual Tcl 
procedure to which the key combination is bound.

This is only a partial list of the bindings associated with the emacs 
package.  See the "Edit --> Emacs" submenu for a complete list of the 
functions and bindings.


	  	 	Macros


	'('  <shift>  

command: startKeyboardMacro , also bound to F13

	')'  <shift>  

command: endKeyboardMacro , also bound to F14

	'e'           

command: executeKeyboardMacro , also bound to F15


See the "Macros Help" file for more information.

Note: the binding <control-u>, optionally followed by a number, is bound to
the command: iterationCount , and repeats the following action X number of
times.  If no number is specified, If no number is entered, the action will
be repeated 4 times.

For example, typing

	<control-u><3><control-x><e>

will repeat the most recently defined macro 3 times in succession.


	  	 	Alpha Shortcuts


	'c' <control> 

command: quit , also bound to <command-q>

Quits Alpha, prompting to save any open modified files if necessary.

	'f' <control> 

proc: findFile , also bound to <command-o>

Opens an "Open File" standard dialog.

	'm'           

proc: matchingLines 

Opens a dialog in which you can enter a regular expression to be searched
in the current window.


	  	 	Window Manipulation


	'1'           

proc: zoom , also bound to <control-/>

Toggles the size of the current window from full to default.
 
	'b'           

proc: chooseWindowStatus , also bound to <control-;>

Opens a dialog containing all of the current windows.

	'k'           

proc: killWindowStatus , also bound to <command-w>

Closes the current window, prompting to save if necessary.

	'o'           

proc: otherThing 

If the current window is not a "split-pane", switches to the last previous
frontmost window.  If the current window IS a "split-pane", switches to the
other pane.

	's' <control> 

command: save , also bound to <command-s>

Saves the current window.


	'w' <control> 

command: saveAs 

Opens a standard "Save As" dialog.


	  	 	Text and Cursor Manipulation


	'd'           

proc: killRegion 

Kills the region between the current mark point and the cursor.

	'l'           

command: currentPosition 

Returns a status message displaying the current position (in bytes).

	'u'           

command: undo , also bound to <command-z>

Undo the most recent action.

	'x' <control> 

command: exchangePointAndMark , also bound to numeric keypad 5

Exchanges the cursor point and the previous mark.  See the numeric key pad
section in the help file "Default Key Bindings" for more information.


Again, these are only some of the key bindings associated with the Emacs 
package.  Many more can be found in the "Edit --> Emacs" menu.


	  	 	Meta Keys


The other modifier keys that emacs had to work with on early keyboards was
the escape key, and, if the keyboard provide it, an additional modifier key
that emacs refers to as the "meta" key.  Not all keyboards had such a
modifier, and, if they did, rarely called it the same thing.  In this emac
mimicking keyset, the option key is used as the emac "meta" key.


	  	Recent Changes


	NEW OPTION: 
	
In the "Config --> Preferences --> Miscellaneous" dialog, there is a flag
called " 'emac'Last Word If Touching ", if this flag is checked, the
behavior of a few emac-bound procedures changes.  Those procedures are:

    proc: upcaseWord
    proc: downcaseWord
    proc: capitalizeWord
    proc: hiliteWord
   
Those procedures behave as normal except when the cursor is right at the
end of a word.  In that case they effect the word they are "touching".  I
find this convenient as after I have typed a word is the usual point at
which I realize that I should have capitalized it.  Ditto for the others.

	NEW PROC AND KEY-BINDING: 

There is one navigation binding that was not in the previous emacs
packages, that was a binding for "beginningOfLogicalLine", what that proc
does is get you to the first non-white character of the current line.  Its
emac-like binding is <escape>-m.

 
	----------------------------------------------------------------------

Author: ??

Emacs Help file updated by Craig Barton Upright

E-mail: <cupright@princeton.edu>
  mail: Princeton University,  Department of Sociology
        Princeton, New Jersey  08544
   www: <http://www.princeton.edu/~cupright/>

